<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>11.Boolean隐式转换原理</title>
</head>

<body>
  <script>
    // 标准语法
    const boolean = new Boolean(true);
    console.log(typeof boolean); // object 
    console.log(boolean.valueOf()); // true
    // if(boolean.valueOf()){ ，用 boolean.valueof()和直接用boolean是一样的
    if (boolean) {
      console.log('houdunren.com'); // houdunren.com
    }
    // 自变量形式 ，实际使用时推荐的
    let hd = true;
    console.log(typeof hd); // boolean 
    if (hd) {
      console.log('hdcms'); // houdunren.com
    }
    //隐式转换
    let number = 89;
    if (number) console.log(number); // 89
    // true 转换成 1 number=89 number!=1 
    console.log(number == true); // false
    console.log(Boolean(number)); // true

    let str = 'houdunren';
    if (str) console.log(Number(str)); //NaN
    // true 转换成 1 ,str = NaN ,str!=1 
    console.log(str == true); // false
    console.log(Boolean(str)); // true

    let array = [1,2,3];// [],[1],[1,2,3]
    console.log(Number(array));//0，1,NaN
    console.log(array == false);// true，false,false
    console.log(Boolean(array)); //true,true,true
    // 引用类型
    if ([]) console.log('houdunren.com'); //houdunren.com
    if ({}) console.log('hdcms'); //hdcms
    console.log(Boolean({})); //true


    //在参与运算时（就是放if后面拿来判断的时候）

    // - String类型，除了空字符串都为真，
    //  - 引用类型（数组、对象）都为真。

    //当与boolean类型比较时，会将两边类型统一为数字1或0。

    


  </script>
</body>

</html>